package com.ruoyi.factory.manpower.utils;

import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 功能描述：日期工具类
 * 时间：2015年11月4日 下午2:30:52
 * @author songxia
 */
public class DateUtil {

    /**
     *
     * 功能描述：字符串转日期类型
     * @param str 日期串
     * @param pattern 日期格式
     * @return
     */
    public static Date stringToDate(String str, String pattern) {
        if (str != null) {
            SimpleDateFormat sdf = new SimpleDateFormat(pattern);
            try {
                return sdf.parse(str);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    /**
     *
     * 功能描述：日期类型转字符串
     * @param date 日期
     * @param pattern 字符串格式
     * @return
     */
    public static String dateToString(Date date, String pattern) {
        if (date != null) {
            SimpleDateFormat sdf = new SimpleDateFormat(pattern);
            return sdf.format(date);
        }
        return "";
    }

    /**
     *
     * 功能描述：Timestamp转String
     * 时间：2014年10月12日 下午10:41:16
     * @author ：songxia
     * @param timestamp
     * @param pattern
     * @return
     */
    public static String dateToString(Timestamp timestamp, String pattern) {
        if (timestamp != null) {
            SimpleDateFormat sdf = new SimpleDateFormat(pattern);
            Date date = timestamp;
            return sdf.format(date);
        }
        return "";
    }

    /**
     *
     * 功能描述：将日期转字符串（格式：yyyy-MM-dd HH:mm:ss）
     * @param date
     * @return
     */
    public static String dateToString(Date date) {
        return dateToString(date, "yyyy-MM-dd HH:mm:ss");
    }

    /**
     *
     * 功能描述：计算两个时间之间相隔的月数
     * 时间：2012-9-4
     * @author ：mss
     * @param beginDate  "2000-05-06 13:24:12"
     * @param endDate  "2000-05-06 13:24:12"
     * @return
     */
    public static int monthNumBetweenTwoDate(String beginDate,String endDate){
        int rs = -1;
        boolean flag = true;
        try {
            if (!(beginDate != null && beginDate.trim().length() > 0 && !beginDate.trim().equalsIgnoreCase("null")))
                flag = false;

            if (!(endDate != null && endDate.trim().length() > 0 && !endDate.trim().equalsIgnoreCase("null")))
                flag = false;

            if (flag) {

                String y1 = beginDate.substring(0, 4);
                String y2 = endDate.substring(0, 4);
                String m1 = beginDate.substring(5, 7);
                String m2 = endDate.substring(5, 7);

                int y11 = Integer.parseInt(y1);
                int y22 = Integer.parseInt(y2);
                int m11 = Integer.parseInt(m1);
                int m22 = Integer.parseInt(m2);

                rs = (y22 - y11) * 12 + (m22 - m11);
            }
        } catch(Exception e) {
            e.printStackTrace();
            rs = -1;
        }
        return rs;
    }

    /**
     *
     * 功能描述：根据时间返回日期字符串（格式yyyyMMddHHmmssSSS）
     * 时间：2015年8月18日 下午2:37:46
     * @author ：songxia
     * @param date
     * @return
     */
    public static String getTimeMillis(Date date) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        return dateFormat.format(date);
    }

    /**
     *
     * 功能描述：根据时间返回日期时间格式（yyyy-MM-dd）
     * 时间：2013-4-8
     * @author ：zengxinliang
     * @param date
     * @return
     */
    public static String getDateString(Date date){
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        return dateFormat.format(date);
    }

    /**
     *
     * 功能描述：将字符串转化为Date类型
     * 时间：2012-3-20
     * @author ：fulihe
     * @param dateStr
     * @return
     */
    public static Date getStr2FormatDate(String dateStr,String formatStr) {
        Date timeDate = null;
        try {
            DateFormat dateFormat = new SimpleDateFormat(formatStr);
            timeDate = dateFormat.parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return timeDate;
    }

    /**
     *
     * 功能描述：根据时间返回日期时间格式（yyyyMMddhhmmss）
     * 时间：2012-3-15
     * @author ：fulihe
     * @param date
     * @return yyyyMMddhhmmss
     */
    public static String getDateTimeString(Date date) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
        return dateFormat.format(date);
    }
}

